package com.tju.shortlink.project.dao.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Date;

import com.tju.shortlink.project.common.database.BaseDo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.experimental.Accessors;

/**
 * <p>
 * 
 * </p>
 *
 * @author mxl
 * @since 2024-07-06
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_link")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Schema(name="LinkDo", description="Link对象")
public class LinkDo extends BaseDo implements Serializable {

    private static final long serialVersionUID = 1L;

    @Schema(description= "ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @Schema(description= "域名")
    private String domain;

    @Schema(description= "短链接")
    private String shortUri;

    @Schema(description= "完整短链接")
    private String fullShortUrl;

    @Schema(description= "原始链接")
    private String originUrl;

    @Schema(description= "点击量")
    private Integer clickNum;

    @Schema(description= "分组标识")
    private String gid;

    @Schema(description= "网站图标")
    private String favicon;

    @Schema(description= "启用标识 0：启用 1：未启用")
    private Integer enableStatus;

    @Schema(description= "创建类型 0：接口创建 1：控制台创建")
    private Integer createdType;

    @Schema(description= "有效期类型 0：永久有效 1：自定义")
    private Integer validDateType;

    @Schema(description= "有效期")
    private Date validDate;

    @Schema(description= "描述")
    @TableField("`describe`")
    private String describe;

    @Schema(description= "历史PV")
    private Integer totalPv;

    @Schema(description= "历史UV")
    private Integer totalUv;

    @Schema(description= "历史UIP")
    private Integer totalUip;

    @Schema(description= "今日PV")
    @TableField(exist = false)
    private Integer todayPv;

    @Schema(description= "今日UV")
    @TableField(exist = false)
    private Integer todayUv;

    @Schema(description= "今日UIP")
    @TableField(exist = false)
    private Integer todayUip;

    @Schema(description = "删除时间")
    private Long delTime;


}
